/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package edu.upn.sigemfi.vnf.bc;

import edu.upn.sigemfi.vnf.be.Giro;
import edu.upn.sigemfi.vnf.be.OrdenPagoT;
import edu.upn.sigemfi.vnf.be.ServicioGeneral;
import edu.upn.sigemfi.vnf.be.ServicioInstitucional;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

/**
 *
 * @author Programador
 */
public class TransaccionNoFinancieraDelegate {

    private TransaccionNoFinancieraFacadeLocal local;

    public TransaccionNoFinancieraDelegate() {
        local = lookupTransaccionNoFinancieraFacade();
    }

    //Giros
    public void crearGiro(Giro giro) throws Exception {
        try {
            local.create(giro);
        } catch (Exception ex) {
            local = lookupTransaccionNoFinancieraFacade();
            throw new Exception("Crear Giro" + ex.getMessage());
        }
    }

    public List<Giro> listarGiros() throws Exception {
        try {
            return local.findAllGiros();
        } catch (Exception e) {
            local = lookupTransaccionNoFinancieraFacade();
            throw new Exception("Buscar Todos los Giros " + e.getMessage(), e);
        }
    }



    public void editarGiro(Giro giro) throws Exception {
        try {
            local.edit(giro);
        } catch (Exception e) {
            local = lookupTransaccionNoFinancieraFacade();
            throw new Exception("Editar Giro" + e.getMessage());
        }

    }
    public void extornarGiro(Giro giro) throws Exception {
        try {
            local.edit(giro);
        } catch (Exception e) {
            local = lookupTransaccionNoFinancieraFacade();
            throw new Exception("Editar Giro" + e.getMessage());
        }

    }

    public void eliminarGiro(Giro giro) throws Exception {
        try {
            local.remove(giro);
        } catch (Exception e) {
            local = lookupTransaccionNoFinancieraFacade();
            throw new Exception("Eliminar Transaccion No Financiera" + e.getMessage());
        }

    }

    public Giro buscarGiro(Long codigo) throws Exception {
        try {
            return local.findGiro(codigo);
        } catch (Exception e) {
            local = lookupTransaccionNoFinancieraFacade();
            throw new Exception("Buscar Giro " + e.getMessage(), e);
        }
    }
 
     //OrdenPago
    public void crearOrdenPago(OrdenPagoT ordenpago) throws Exception {
        try {
            local.create(ordenpago);
        } catch (Exception ex) {
            local = lookupTransaccionNoFinancieraFacade();
            throw new Exception("Crear Orden Pago" + ex.getMessage());
        }
    }

    public List<OrdenPagoT> listarOrdenPagos() throws Exception {
        try {
            return local.findAllOrdenPago();
        } catch (Exception e) {
            local = lookupTransaccionNoFinancieraFacade();
            throw new Exception("Buscar Todos las Orden Pagos " + e.getMessage(), e);
        }
    }



    public void editarOrdenPago(OrdenPagoT ordenpago) throws Exception {
        try {
            local.edit(ordenpago);
        } catch (Exception e) {
            local = lookupTransaccionNoFinancieraFacade();
            throw new Exception("Editar Orden de Pago" + e.getMessage());
        }

    }
    public void extornarOrdenPago(OrdenPagoT ordenpago) throws Exception {
        try {
            local.edit(ordenpago);
        } catch (Exception e) {
            local = lookupTransaccionNoFinancieraFacade();
            throw new Exception("Extornar Orden de Pago" + e.getMessage());
        }

    }

    public void eliminarOrdenPago(OrdenPagoT ordenpago) throws Exception {
        try {
            local.remove(ordenpago);
        } catch (Exception e) {
            local = lookupTransaccionNoFinancieraFacade();
            throw new Exception("Eliminar Transaccion No Financiera" + e.getMessage());
        }

    }

    public OrdenPagoT buscarOrdenPago(Long ordenpago) throws Exception {
        try {
            return local.findOrdenPago(ordenpago);
        } catch (Exception e) {
            local = lookupTransaccionNoFinancieraFacade();
            throw new Exception("Buscar Orden Pago " + e.getMessage(), e);
        }
    }

    //ServicioGeneral
    public void crearServicioGeneral(ServicioGeneral servicioGeneral) throws Exception {
        try {
            local.create(servicioGeneral);
        } catch (Exception ex) {
            local = lookupTransaccionNoFinancieraFacade();
            throw new Exception("Crear Servicio General" + ex.getMessage());
        }
    }

    public List<ServicioGeneral> listarServiciosGenerales() throws Exception {
        try {
            return local.findAllServicioGenerales();
        } catch (Exception e) {
            local = lookupTransaccionNoFinancieraFacade();
            throw new Exception("Buscar Todos los servicios genreales " + e.getMessage(), e);
        }
    }



    public void editarServicioGeneral(ServicioGeneral servicioGeneral) throws Exception {
        try {
            local.edit(servicioGeneral);
        } catch (Exception e) {
            local = lookupTransaccionNoFinancieraFacade();
            throw new Exception("Editar Servicio General" + e.getMessage());
        }

    }
    public void extornarServicioGeneral(ServicioGeneral ServicioGeneral) throws Exception {
        try {
            local.edit(ServicioGeneral);
        } catch (Exception e) {
            local = lookupTransaccionNoFinancieraFacade();
            throw new Exception("Extornar Servicio General" + e.getMessage());
        }

    }

    public void eliminarServicioGeneral(ServicioGeneral servicioGeneral) throws Exception {
        try {
            local.remove(servicioGeneral);
        } catch (Exception e) {
            local = lookupTransaccionNoFinancieraFacade();
            throw new Exception("Eliminar Transaccion No Financiera" + e.getMessage());
        }

    }

    public ServicioGeneral buscarServicioGeneral(Long servicioGeneral) throws Exception {
        try {
            return local.findServicioGeneral(servicioGeneral);
        } catch (Exception e) {
            local = lookupTransaccionNoFinancieraFacade();
            throw new Exception("Buscar Orden Pago " + e.getMessage(), e);
        }
    }

    //ServicioInstitucional
    public void crearServicioInstitucional(ServicioInstitucional servicioInstitucional) throws Exception {
        try {
            local.create(servicioInstitucional);
        } catch (Exception ex) {
            local = lookupTransaccionNoFinancieraFacade();
            throw new Exception("Crear Servicio Institucional" + ex.getMessage());
        }
    }

    public List<ServicioInstitucional> listarServicioInstitucionales() throws Exception {
        try {
            return local.findAllServicioInstitucionales();
        } catch (Exception e) {
            local = lookupTransaccionNoFinancieraFacade();
            throw new Exception("Buscar Todos los servicios institucionales " + e.getMessage(), e);
        }
    }



    public void editarServicioInstitucional(ServicioInstitucional servicioInstitucional) throws Exception {
        try {
            local.edit(servicioInstitucional);
        } catch (Exception e) {
            local = lookupTransaccionNoFinancieraFacade();
            throw new Exception("Editar Servicio Institucional" + e.getMessage());
        }

    }
    public void extornarServicioInstitucional(ServicioInstitucional servicioInstitucional) throws Exception {
        try {
            local.edit(servicioInstitucional);
        } catch (Exception e) {
            local = lookupTransaccionNoFinancieraFacade();
            throw new Exception("Extornar Servicio Institucional" + e.getMessage());
        }

    }

    public void eliminarServicioInstitucional(ServicioInstitucional servicioInstitucional) throws Exception {
        try {
            local.remove(servicioInstitucional);
        } catch (Exception e) {
            local = lookupTransaccionNoFinancieraFacade();
            throw new Exception("Eliminar Transaccion No Financiera" + e.getMessage());
        }

    }

    public ServicioInstitucional buscarServicioInstitucional(Long servicioInstitucional) throws Exception {
        try {
            return local.findServicioInstitucional(servicioInstitucional);
        } catch (Exception e) {
            local = lookupTransaccionNoFinancieraFacade();
            throw new Exception("Buscar Servicio General" + e.getMessage(), e);
        }
    }

    private TransaccionNoFinancieraFacadeLocal lookupTransaccionNoFinancieraFacade() {
        try {
            Context c = new InitialContext();
            return (TransaccionNoFinancieraFacadeLocal) c.lookup("java:comp/env/TransaccionNoFinancieraFacade");
        } catch (NamingException ne) {
            Logger.getLogger(getClass().getName()).log(Level.SEVERE, "exception caught", ne);
            throw new RuntimeException(ne);
        }
    }

}
